字典樹(Trie) 是一種專門用來處理字串(單字)的樹狀結構,特別適合解決字串(單字)集合中的「前綴匹配」問題。它的每個節點代表一個字母,並且從根節點到某個葉節點的路徑能組成一個完整的字串(單字)。在字典樹中,每個單詞的共用前綴(例如:「cat」和「car」的開頭皆為『c』,故此處指的共用前綴為『c』。)只會儲存一次,因此具有節省空間的效果。字典樹最常見的應用是單詞查詢、拼字檢查和自動補全。每個節點通常有一個字母和指向下一個字母的多個子節點。如果一個單字完全插入到樹中,最後的節點會標記為單字的結尾。插入、查找、刪除操作都能高效率地進行,特別是處理具有共同前綴的單字集合。
【補充】字典樹的根節點
字典樹的根節點是整個字典樹的起點,通常是空的或不包含任何字母。根節點主要作為一個入口,從這裡開始,每一個分支代表著不同的單字或字母的前綴。從根節點向下層層遍歷,直到達到葉節點時,會形成一個完整的單字。
字典樹根節點的特點:
範例說明
假設我們要在字典樹中插入以下單詞:cat、 car、dog、dot。創建字典樹的步驟如下:
最終的字典樹結構如下:
優點:
快速的前綴查詢:字典樹的查詢效率很高,特別是查找和自動補全某個前綴。查找時間複雜度為 O(m),其中 m 是查詢字串的長度。
例子:如果我們要查詢前綴 "ca",只需沿著樹遍歷三個節點即可,效率高於線性掃描整個單字列表的方式。
節省空間:共用相同前綴的字母只儲存一次,節省了不少空間。例如單詞 "cat" 和 "car" 共用前綴 "ca",因此樹中不需要重複儲存 "ca"。
自動補全:在字典樹中,可以很輕鬆地實現自動補全功能,透過前綴快速查找可能的單字,這是字典樹的強大應用之一。
缺點:
參考資料: